/**
 * 运行耗时任务
 * @param task 需要执行的任务
 * @param callback 回调函数
 */
function _runTask(task: Function, callback: Function) {
  // 使用requestIdleCallback函数，在浏览器空闲时执行任务
  requestIdleCallback((deadline) => {
    // 如果浏览器空闲时间大于0，则执行任务和回调函数
    if (deadline.timeRemaining() > 0) {
      task()
      callback()
    } else {
      // 否则递归调用_runTask函数
      _runTask(task, callback)
    }
  })
}

/**
 * 耗时任务执行时，使用requestIdleCallback函数，在浏览器空闲时执行任务；
 * 避免卡顿浏览器
 * @param task 需要执行的任务
 * @returns
 */
export function bigTaskRun(task: Function) {
  // 返回一个Promise对象
  return new Promise((resolve) => {
    // 调用_runTask函数，传入task和resolve作为参数
    _runTask(task, resolve)
  })
}
